package Validation;


/**
 *
 * @author Gustavo C.
 * @author Rodrigo M.
 */
public class Cnpj {

    int soma;
    String cnpjin;
    int verificador1;
    int verificador2;
    int numero, numero1, aux;
    char n;
    String s;

    public boolean ValidaCnpj() throws NumberFormatException{

        for (int i = 0; i < 12; i++) {

            n = cnpjin.charAt(i);
            s = String.valueOf(n);
            numero = Integer.parseInt(s);
            if (i <= 3) {
                aux = 5 - i;
            } else {
                aux = 13 - i;
            }

            soma += aux * numero;
        }//for end

        if (soma % 11 < 2) {
            setVerificador1(0);
        } else {
            setVerificador1(11 - (soma % 11));
        }

        soma = 0;

        for (int i = 0; i < 13; i++) {

            n = cnpjin.charAt(i);
            s = String.valueOf(n);
            numero = Integer.parseInt(s);

            if (i <= 4) {
                aux = 6 - i;
            } else {
                aux = 14 - i;
            }
            soma += aux * numero;

        }//for end

        if (soma % 11 < 2) {
            setVerificador2(0);
        } else {
            setVerificador2(11 - (soma % 11));
        }

        n = cnpjin.charAt(12);
        s = String.valueOf(n);
        numero = Integer.parseInt(s);

        n = cnpjin.charAt(13);
        s = String.valueOf(n);
        numero1 = Integer.parseInt(s);

        if (getVerificador1() == numero && getVerificador2() == numero1) {
            return true;
        } else {
            return false;
        }
    }//validaCpf end

    public Cnpj(String cnpjin) {
        this.cnpjin = cnpjin;
    }

    public String getCnpjin() {
        return cnpjin;
    }

    public void setCnpjin(String cnpjin) throws StringIndexOutOfBoundsException {
        if (cnpjin.length() != 14) {
            throw new StringIndexOutOfBoundsException("Há caracteres faltando ou em excesso.");
        } else {
            this.cnpjin = cnpjin;
        }
    }

    public int getVerificador1() {
        return verificador1;
    }

    public void setVerificador1(int verificador1) {
        this.verificador1 = verificador1;
    }

    public int getVerificador2() {
        return verificador2;
    }

    public void setVerificador2(int verificador2) {
        this.verificador2 = verificador2;
    }
}
